﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using QLLUONG.BLL;
using QLLUONG.DTO;
namespace QLLUONG
{
    public partial class FormLuong : Form
    {
        public FormLuong()
        {
            InitializeComponent();
        }
        LuongBLL LBLL = new LuongBLL();
        ChucVuBLL CVBLL = new ChucVuBLL();
        NhanVienBLL NVBLL = new NhanVienBLL();
        double LuongCb = 2800000;
        float PhuCapCB = 380000;
        private void FormLuong_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'qLLUONGDataSet.LUONG' table. You can move, or remove it, as needed.
            this.lUONGTableAdapter.Fill(this.qLLUONGDataSet.LUONG);
            DataGridLuong.DataSource = LBLL.Show();
            Insertbtn.Enabled = false;
            ShowInsert(false);
        }
        public double TinhLuong(double HSL, double HSPC, double BaoHiem, int ngaycong)
        {

            double Luong = ((LuongCb * HSL) / ngaycong) * 28 + (PhuCapCB * HSPC) - BaoHiem;
            return Luong;
        }
        public bool CheckNull()
        {
            int NgayCong = Int32.Parse(txtNgayCong.Text);
            if (txtMaNVLuong.Text == "")
            {
                MessageBox.Show("Không để trống Mã Nhân Viên");
                return false;
            }
            else if (txtBaoHiem.Text == "")
            {
                MessageBox.Show("Không Để trống tiền Bảo Hiểm");
                return false;
            }
            else if (txtNgayCong.Text == "")
            {
                MessageBox.Show("Nhập Số Ngày Công");
                return false;
            }
            else if (txtThuNhap.Text == "")
            {
                MessageBox.Show("Nhập Lương Tạm Ứng");
                return false;
            }
            else if (Int32.Parse(txtNgayCong.Text) > 31 || Int32.Parse(txtNgayCong.Text) < 1)
            {
                MessageBox.Show("Ngày Công Trong khoảng 1 đến 31");
                return false;
            }    
            else
            {
                return true;
            }
        }
        public void ResetForm()
        {
            txtMaNVLuong.ResetText();
            txtBaoHiem.ResetText();
            txtNgayCong.ResetText();
            txtThuNhap.ResetText();
        }
        private void Insertbtn_Click(object sender, EventArgs e)
        {
            String MaNV = txtMaNVLuong.Text;
            
            if (CheckNull() == true)
            {
                bool CheckNhanVien = NVBLL.CheckNhanVien(MaNV);
                if (CheckNhanVien == true)
                {
                    String TenCV = NVBLL.TenCV(MaNV);
                    String MSCV = CVBLL.MSCV(TenCV);
                    double ThuNhapKhac = double.Parse(txtThuNhap.Text);
                    double BaoHiem = double.Parse(txtBaoHiem.Text);
                    int NgayCong = Int32.Parse(txtNgayCong.Text);
                    double HSL = CVBLL.HSL(MSCV);
                    double HSPC = CVBLL.PhuCap(MSCV);
                    
                    double Luong = ((LuongCb * HSL) * NgayCong) / 28;
                    double PhuCap = PhuCapCB * HSPC;
                    PhuCap = Math.Round(PhuCap,0);
                    
                    double LuongTong = TinhLuong(HSL, HSPC, BaoHiem, NgayCong) + ThuNhapKhac;
                    LuongTong = Math.Round(LuongTong,0);
                    double LuongTam = (LuongTong * 30) / 100;
                    Luong luong = new Luong(MaNV, TenCV, PhuCap, BaoHiem, LuongTong, NgayCong, ThuNhapKhac);
                    
                    bool KQ = LBLL.Insert(luong);
                    if (KQ == true)
                    {
                        ResetForm();
                        MessageBox.Show("Thêm Thành Công");
                        Insertbtn.Enabled = false;
                        ShowInsert(false);
                        DataGridLuong.DataSource = LBLL.Show();
                    }
                    else
                    {
                        MessageBox.Show("Thất Bại , Kiểm Tra Dữ Liệu Nhập Vào");
                    }
                    
                }
                else
                {
                    MessageBox.Show("Nhân Viên Không Tồn Tại , Kiểm Tra lại Mã Nhân Viên");
                }
               
            }
        }

        private void Updatebtn_Click(object sender, EventArgs e)
        {
            String MaNV = txtMaNVLuong.Text;

            if (CheckNull() == true)
            {
                bool CheckNhanVien = NVBLL.CheckNhanVien(MaNV);
                if (CheckNhanVien == true)
                {
                    String TenCV = NVBLL.TenCV(MaNV);
                    String MSCV = CVBLL.MSCV(TenCV);
                    float ThuNhapKhac = float.Parse(txtThuNhap.Text);
                    float BaoHiem = float.Parse(txtBaoHiem.Text);
                    int NgayCong = Int32.Parse(txtNgayCong.Text);
                    double HSL = CVBLL.HSL(MSCV);
                    double HSPC = CVBLL.PhuCap(MSCV);
                    double Luong = ((LuongCb * HSL) * NgayCong) / 28;
                    double PhuCap = PhuCapCB * HSPC;
                    double LuongTong = TinhLuong(HSL, HSPC, BaoHiem, NgayCong) + ThuNhapKhac;
                    double LuongTam = (LuongTong * 30) / 100;
                    
                    Luong luong = new Luong(MaNV, TenCV, PhuCap, BaoHiem, LuongTong, NgayCong, ThuNhapKhac);
                    bool KQ = LBLL.Update(luong);
                    if (KQ == true)
                    {
                        ResetForm();
                        ShowInsert(false);
                        Insertbtn.Enabled = false;
                        MessageBox.Show("Update Thành Công");
                        DataGridLuong.DataSource = LBLL.Show();
                    }
                    else
                    {
                        MessageBox.Show("Thất Bại , Kiểm Tra Dữ Liệu Nhập Vào");
                    }
                }
                else
                {
                    MessageBox.Show("Nhân Viên Không Tồn Tại , Kiểm Tra lại Mã Nhân Viên");
                }

            }
        }

        private void Deletebtn_Click(object sender, EventArgs e)
        {
             String MaNV = txtMaNVLuong.Text;
		-	            if (MaNV != "")
           {
	                bool CheckNhanVien = NVBLL.CheckNhanVien(MaNV);
                if (CheckNhanVien == true)
                {
                    bool KQ = LBLL.Delete(MaNV);
	                    if (KQ == true)
	                    {
                        ResetForm();
	                        MessageBox.Show("Xóa Thành Công");
	                        DataGridLuong.DataSource = LBLL.Show();
	                    }
	                    else
	                    {
	                        MessageBox.Show("Thất Bại , Kiểm Tra Dữ Liệu Nhập Vào");
	                    }
	                }
	                else
	                {
	                    MessageBox.Show("Nhân Viên Không Tồn Tại");
	                }
	            }
	            else
	            {
	                MessageBox.Show("Mã Nhân Viên Đang Trống");	            }
        }

        private void DataGridLuong_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            txtMaNVLuong.Text = DataGridLuong.CurrentRow.Cells[0].Value.ToString();
            txtBaoHiem.Text = DataGridLuong.CurrentRow.Cells[4].Value.ToString();
            txtThuNhap.Text = DataGridLuong.CurrentRow.Cells[3].Value.ToString();
            txtNgayCong.Text = DataGridLuong.CurrentRow.Cells[6].Value.ToString();

        }
        public void ShowInsert(bool kq)
        {
            txtMaNVLuong.Enabled = kq;
            txtBaoHiem.Enabled = kq;
            txtNgayCong.Enabled = kq;
            txtThuNhap.Enabled = kq;
        }
        private void Reload_Click(object sender, EventArgs e)
        {
            DataGridLuong.DataSource = NVBLL.Show();
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void Reload_Click_1(object sender, EventArgs e)
        {
            DataGridLuong.DataSource = NVBLL.Show();
            
        }

       

        private void button1_Click(object sender, EventArgs e)
        {
            ShowInsert(true);
            Insertbtn.Enabled = true;
        }

        private void txtThuNhap_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8 && e.KeyChar != 44)
            {
                e.Handled = true;
            }
        }

        private void txtNgayCong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8)
            {
                e.Handled = true;
            }
        }

        private void txtBaoHiem_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8 && e.KeyChar != 44)
            {
                e.Handled = true;
            }
        }

        private void txtNgayCong_TextChanged(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            DataGridLuong.DataSource = NVBLL.Show();
            FormLuong_Load(sender,e);
        }

    }
}
